iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 8
0
Software Development

ROS進階學習筆記系列 第 8

Day 08 - package.xml 的奧妙

  • 分享至 

  • xImage
  •  

延續昨天的launch檔,今天來講解同樣身為xml檔的package.xml吧~
package.xml是在做ros catkin_create_package時預先建好的檔案,目的是為了讓ROS系統能辨識此package。package.xml可以想成是該package的描述檔,其定義了package的名稱、版本號、相依套件等,基本會出現的tag如下:

  • <name> - package 名稱
  • <version> - 此package的版本號(使用3點式命名,e.g. 1.12.0)
  • <description> - 簡單描述此package的用途
  • <maintainer> - 有在維護此package的人名
  • <license> - 釋出程式碼的軟體許可證(e.g. GPL,BSD,ASL)
  • <author> - 原作者名
  • <url> - 介紹此package的網站連結,可以放在這邊供人參考

現在package.xml支援兩種格式,ROS官方建議使用第二種,不過使用舊的也可以兼容,所以我就兩個都介紹吧~

完整的package.xml架構 (format 2)

<package format="2">
  <name>foo_core</name>
  <version>1.2.4</version>
  <description>
    This package provides foo capability.
  </description>
  <maintainer email="ivana@willowgarage.com">Ivana Bildbotz</maintainer>
  <license>BSD</license>
  <url>http://ros.org/wiki/foo_core</url>
  <author>Ivana Bildbotz</author>

  <buildtool_depend>catkin</buildtool_depend>

  <depend>roscpp</depend>
  <depend>std_msgs</depend>

  <build_depend>message_generation</build_depend>

  <exec_depend>message_runtime</exec_depend>
  <exec_depend>rospy</exec_depend>

  <test_depend>python-mock</test_depend>

  <doc_depend>doxygen</doc_depend>
</package>

除了既有描述package檔的標籤,下方便是描述相依模組的標籤,主要分為六項:

  • <build_depend> - 在編譯此package之前,需要事先編譯的其他package
  • <build_export_depend> - 編譯此package時會include的lib名稱,通常也會加在cMakeList的CATKIN_DEPENDS中
  • <exec_depend> - 編譯此package時會需要執行的其他package的程式,通常也會加在cMakeList的CATKIN_DEPENDS中
  • <test_depend> - 在unit test中使用,這個標籤內所定義的package不該出現在其他標籤中
  • <buildtool_depend> - 在編譯此package之前需要使用的編譯工具,通常只需要catkin
  • <doc_depend> - 此package需要產生的文件格式,如doxygen
  • 最後其實還有一個<depend> - 這個標籤可以涵蓋前面的build_depend<build_export_depend>exec_depend,是最常用的標籤之一

完整的package.xml架構(format 1)

<?xml version="1.0"?>
<package>
  <name>beginner_tutorials</name>
  <version>0.1.0</version>
  <description>The beginner_tutorials package</description>
  <maintainer email="you@yourdomain.tld">Your Name</maintainer>
  <license>BSD</license>
  <url type="website">http://wiki.ros.org/beginner_tutorials</url>
  <author email="you@yourdomain.tld">Jane Doe</author>

  <buildtool_depend>catkin</buildtool_depend>

  <build_depend>roscpp</build_depend>
  <build_depend>rospy</build_depend>
  <build_depend>std_msgs</build_depend>

  <run_depend>roscpp</run_depend>
  <run_depend>rospy</run_depend>
  <run_depend>std_msgs</run_depend>

</package>

一樣除了既定的標籤外,定義相依模組的標籤為:

  • <buildtool_depend> - 跟格式二的<buildtool_depend>一樣
  • <build_depend> - 跟格式二的<build_depend>一樣
  • <run_depend> - 跟格式二的<exec_depend>一樣
  • <test_depend> - 跟格式二的<test_depend>一樣

可以看到,新版本跟舊版本的差別主要在於沒有<build_export_depend><doc_depend>,若想知道更多的差別,可以參考此篇官方介紹

Reference

http://wiki.ros.org/catkin/package.xml
https://blog.csdn.net/wengge987/article/details/50614386
https://www.itread01.com/content/1548087310.html
https://docs.ros.org/melodic/api/catkin/html/howto/format2/migrating_from_format_1.html#migrating-from-format1-to-format2


上一篇
Day 07 - 好用的腳本 roslaunch (2)
下一篇
Day 09 - ROS中的CMakeList.txt
系列文
ROS進階學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言